package java基础知识;

import java.io.*;

/**
 * @author coderFu
 * @create 2022/2/10
 * 序列化：
 */
public class SerializableDemo {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //序列化 将java 对象 序列化为二进制字节流
        FileOutputStream fos = new FileOutputStream("objectDemo.out");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        Teacher teacher = new Teacher("fuyinlei","wuyixueyuan",23);
        oos.writeObject(teacher); // 写到磁盘上
        oos.flush();
        oos.close();


        //反序列化为对象
        FileInputStream fis = new FileInputStream("objectDemo.out");
        ObjectInputStream  ois = new java.io.ObjectInputStream(fis);
        Object o = ois.readObject();
        Teacher teacher1 = (Teacher)o;
        System.out.println(teacher1.age);


    }
}

class Teacher implements Serializable{
    /**
     * 版本号的好处，希望类的不同版本对序列化兼容，因此要确保不同版本具有相同的版本号
     * 版本号隔离  clone  序列化同时也可以完成深拷贝！
     *
     * static transient
     * 声明为： static 和  transient类型的成员数据，不能被序列化。 transient代表对象
     * 是临时数据。
     *
     *
     */

    private static final long serialVersionUID = -3229166989004385005L;

    String name;

    String campus;

    int age;

    public Teacher(String name, String campus, int age){
        this.name = name;
        this.campus = campus;
        this.age = age;
    }



}
